home *** CD-ROM | disk | FTP | other *** search
/ Macwelt 1 / Macwelt DVD 1.toast / Software für Mac-OS X / Entwickler-Tools / netbeans / modules / ext / djava.jar / koala / dynamicjava / classinfo / TreeClassInfo$MembersVisitor.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-03-14  |  5.8 KB  |  109 lines

  1. package koala.dynamicjava.classinfo;
  2.  
  3. import java.lang.reflect.Modifier;
  4. import java.util.Iterator;
  5. import java.util.LinkedList;
  6. import java.util.List;
  7. import koala.dynamicjava.tree.ClassDeclaration;
  8. import koala.dynamicjava.tree.ConstructorDeclaration;
  9. import koala.dynamicjava.tree.ConstructorInvocation;
  10. import koala.dynamicjava.tree.Expression;
  11. import koala.dynamicjava.tree.FieldDeclaration;
  12. import koala.dynamicjava.tree.FormalParameter;
  13. import koala.dynamicjava.tree.Identifier;
  14. import koala.dynamicjava.tree.InterfaceDeclaration;
  15. import koala.dynamicjava.tree.MethodDeclaration;
  16. import koala.dynamicjava.tree.Node;
  17. import koala.dynamicjava.tree.QualifiedName;
  18. import koala.dynamicjava.tree.ReferenceType;
  19. import koala.dynamicjava.tree.SimpleAssignExpression;
  20. import koala.dynamicjava.tree.visitor.VisitorObject;
  21.  
  22. class TreeClassInfo$MembersVisitor extends VisitorObject {
  23.    // $FF: synthetic field
  24.    private final TreeClassInfo this$0;
  25.  
  26.    public Object visit(ClassDeclaration var1) {
  27.       var1.setProperty("declaringClass", this.this$0);
  28.       TreeClassInfo.access$6(this.this$0).add(TreeClassInfo.access$5(this.this$0).addClassInfo(this.this$0.getName() + "$" + var1.getName(), var1));
  29.       return null;
  30.    }
  31.  
  32.    public Object visit(InterfaceDeclaration var1) {
  33.       var1.setProperty("declaringClass", this.this$0);
  34.       TreeClassInfo.access$6(this.this$0).add(TreeClassInfo.access$5(this.this$0).addClassInfo(this.this$0.getName() + "$" + var1.getName(), var1));
  35.       return null;
  36.    }
  37.  
  38.    public Object visit(FieldDeclaration var1) {
  39.       TreeClassInfo.access$7(this.this$0).put(var1.getName(), new TreeFieldInfo(var1, TreeClassInfo.access$5(this.this$0), this.this$0));
  40.       return null;
  41.    }
  42.  
  43.    public Object visit(ConstructorDeclaration var1) {
  44.       if (var1.getConstructorInvocation() == null) {
  45.          ConstructorInvocation var2 = new ConstructorInvocation((Expression)null, (List)null, true);
  46.          var1.setConstructorInvocation(var2);
  47.       }
  48.  
  49.       ClassInfo var6 = this.this$0.getDeclaringClass();
  50.       if (!TreeClassInfo.access$0(this.this$0).hasProperty("treeVisited") && var6 != null && !Modifier.isStatic(this.this$0.getModifiers())) {
  51.          ReferenceType var3 = new ReferenceType(var6.getName());
  52.          var1.getParameters().add(0, new FormalParameter(false, var3, "param$0"));
  53.       }
  54.  
  55.       if (var6 != null && !Modifier.isStatic(this.this$0.getModifiers())) {
  56.          LinkedList var4 = new LinkedList();
  57.          var4.add(new Identifier("this$" + TreeClassInfo.access$2(this.this$0)));
  58.          LinkedList var5 = new LinkedList();
  59.          var5.add(new Identifier("param$0"));
  60.          SimpleAssignExpression var7 = new SimpleAssignExpression(new QualifiedName(var4), new QualifiedName(var5));
  61.          var1.getStatements().add(0, var7);
  62.       }
  63.  
  64.       TreeClassInfo.access$3(this.this$0).add(new TreeConstructorInfo(var1, TreeClassInfo.access$5(this.this$0), this.this$0));
  65.       return null;
  66.    }
  67.  
  68.    public Object visit(MethodDeclaration var1) {
  69.       Object var2 = (List)TreeClassInfo.access$8(this.this$0).get(var1.getName());
  70.       if (var2 == null) {
  71.          var2 = new LinkedList();
  72.       }
  73.  
  74.       ((List)var2).add(new TreeMethodInfo(var1, TreeClassInfo.access$5(this.this$0), this.this$0));
  75.       TreeClassInfo.access$8(this.this$0).put(var1.getName(), var2);
  76.       TreeClassInfo var10000 = this.this$0;
  77.       TreeClassInfo.access$10(var10000, TreeClassInfo.access$9(var10000) + 1);
  78.       return null;
  79.    }
  80.  
  81.    TreeClassInfo$MembersVisitor(TreeClassInfo var1) {
  82.       this.this$0 = var1;
  83.       if (!this.this$0.isArray()) {
  84.          Iterator var2 = TreeClassInfo.access$0(this.this$0).getMembers().iterator();
  85.  
  86.          while(var2.hasNext()) {
  87.             ((Node)var2.next()).acceptVisitor(this);
  88.          }
  89.  
  90.          if (!TreeClassInfo.access$0(this.this$0).hasProperty("treeVisited")) {
  91.             ClassInfo var3 = this.this$0.getDeclaringClass();
  92.             if (var3 != null && !Modifier.isStatic(this.this$0.getModifiers())) {
  93.                FieldDeclaration var4 = new FieldDeclaration(1, new ReferenceType(var3.getName()), "this$" + TreeClassInfo.access$2(this.this$0), (Expression)null);
  94.                var4.acceptVisitor(this);
  95.                TreeClassInfo.access$0(this.this$0).getMembers().add(var4);
  96.             }
  97.  
  98.             if (TreeClassInfo.access$3(this.this$0).size() == 0 && !this.this$0.isInterface() && !this.this$0.isPrimitive()) {
  99.                ConstructorInvocation var6 = new ConstructorInvocation((Expression)null, (List)null, true);
  100.                ConstructorDeclaration var5 = new ConstructorDeclaration(1, TreeClassInfo.access$0(this.this$0).getName(), new LinkedList(), new LinkedList(), var6, new LinkedList());
  101.                var5.acceptVisitor(this);
  102.                TreeClassInfo.access$0(this.this$0).getMembers().add(var5);
  103.             }
  104.          }
  105.       }
  106.  
  107.    }
  108. }
  109.